package com.yugao.fintech.antelope.demo.mq_sequence;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.*;

import java.io.Serializable;
import java.util.Date;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("mq_data")
public class MqData implements Serializable {
    /**
     * 如果连续失败三次, 则跳过
     */
    public static final Integer MAX_ERROR_COUNT = 3;

    public static LambdaQueryWrapper<MqData> lqw() {
        return Wrappers.lambdaQuery();
    }

    @Getter
    @AllArgsConstructor
    public enum Status {
        WAIT_PROCESS("1"),
        PROCESSED("2"),
        PROCESS_FAIL("3");
        private final String code;
    }

    @TableId
    private String id;
    /**
     * 顺序号-一个业务流程中，每个节点的标识, 比如某个业务流程中有三个节点分别为a, b, c <br/>
     * 那么就为每个节点设置一个编号(必须是依次递增的)
     */
    private Integer sequenceNo;

    /**
     * 每个业务流程标识不同
     */
    @Builder.Default
    private String bizNo = "0";

    /**
     * 消息内容
     */
    private String msgContent;

    @Builder.Default
    private Integer errorCount = 0;

    private String errorContent;


    /**
     * 是否被处理了
     */
    @Builder.Default
    private String status = Status.WAIT_PROCESS.getCode();

    /**
     * 创建时间
     */
    @Builder.Default
    private Date createTime = new Date();
}
